public class Destructible
{
    /// <summary>
    /// 移动可破坏物到点
    /// </summary>
    /// <param name="point"> 点 </param>
    /// <returns></returns>
    public extern void api_transmit(Point point);

    /// <summary>
    /// 杀死可破坏物
    /// </summary>
    /// <param name="unit"> 凶手单位 </param>
    /// <returns></returns>
    public extern void api_kill(Unit unit);

    /// <summary>
    /// 使可破坏物枯竭
    /// </summary>
    /// <param name="unit"> 采集单位 </param>
    /// <returns></returns>
    public extern void api_set_dest_dry(Unit unit);

    /// <summary>
    /// 删除可破坏物
    /// </summary>
    /// <returns></returns>
    public extern void api_delete();

    /// <summary>
    /// 复活可破坏物
    /// </summary>
    /// <param name="point"> 复活点 </param>
    /// <returns></returns>
    public extern void api_revivie(Point point);

    /// <summary>
    /// 显示隐藏可破坏物
    /// </summary>
    /// <param name="is_show"> 是否显示 </param>
    /// <returns></returns>
    public extern void api_show_hide(bool? is_show);

    /// <summary>
    /// 设置可破坏物生命值
    /// </summary>
    /// <param name="hp_value"> 生命值 </param>
    /// <returns></returns>
    public extern void api_set_hp(Fix32 hp_value);

    /// <summary>
    /// 设置可破坏物最大生命值
    /// </summary>
    /// <param name="hp_value"> 最大生命值 </param>
    /// <returns></returns>
    public extern void api_set_max_hp(Fix32 hp_value);

    /// <summary>
    /// 设置可破坏物的名称
    /// </summary>
    /// <param name="name"> 名称 </param>
    /// <returns></returns>
    public extern void api_set_name(string name);

    /// <summary>
    /// 设置可破坏物的资源数量
    /// </summary>
    /// <param name="num"> 资源数量 </param>
    /// <returns></returns>
    public extern void api_set_source_num(int? num);

    /// <summary>
    /// 设置可破坏物的大小
    /// </summary>
    /// <param name="x"> x大小 </param>
    /// <param name="y"> y大小 </param>
    /// <param name="z"> z大小 </param>
    /// <returns></returns>
    public extern void api_set_scale(Fix32 x,Fix32 y,Fix32 z);

    /// <summary>
    /// 设置可破坏物的角度
    /// </summary>
    /// <param name="angle"> 角度 </param>
    /// <returns></returns>
    public extern void api_set_face_angle(Fix32 angle);

    /// <summary>
    /// 获取可破坏物的整型属性
    /// </summary>
    /// <param name="attr_name"> 属性名称 </param>
    /// <returns>整数类型返回值</returns>
    public extern int? api_get_int_attr(string attr_name);

    /// <summary>
    /// 获取可破坏物的编号
    /// </summary>
    /// <returns>可破坏物编号</returns>
    public extern int? api_get_key();

    /// <summary>
    /// 获取可破坏物的字符串属性
    /// </summary>
    /// <param name="attr_name"> 属性名称 </param>
    /// <returns>字符串类型返回值</returns>
    public extern string api_get_str_attr(string attr_name);

    /// <summary>
    /// 设置可破坏物的字符串属性
    /// </summary>
    /// <param name="attr_name"> 属性名称 </param>
    /// <param name="value"> 属性取值 </param>
    /// <returns></returns>
    public extern void api_set_str_attr(string attr_name,string value);

    /// <summary>
    /// 获取可破坏物的布尔值属性
    /// </summary>
    /// <param name="attr_name"> 属性名称 </param>
    /// <returns>布尔类型返回值</returns>
    public extern bool? api_get_bool_attr(string attr_name);

    /// <summary>
    /// 获取可破坏物的浮点数属性
    /// </summary>
    /// <param name="attr_name"> 属性名称 </param>
    /// <returns>浮点类型返回值</returns>
    public extern Fix32 api_get_float_attr(string attr_name);

    /// <summary>
    /// 获取可破坏物所属阵营id
    /// </summary>
    /// <returns>阵营ID</returns>
    public extern int? api_get_camp_id();

    /// <summary>
    /// 获取可破坏物位置
    /// </summary>
    /// <returns>单位位置</returns>
    public extern Point api_get_position();

    /// <summary>
    /// 获取可破坏物的id
    /// </summary>
    /// <returns>可破坏物id</returns>
    public extern int? api_get_id();

    /// <summary>
    /// 获取可破坏物的x轴缩放
    /// </summary>
    /// <returns>缩放的值</returns>
    public extern double? api_get_x_scale();

    /// <summary>
    /// 获取可破坏物的y轴缩放
    /// </summary>
    /// <returns>缩放的值</returns>
    public extern double? api_get_y_scale();

    /// <summary>
    /// 获取可破坏物的z轴缩放
    /// </summary>
    /// <returns>缩放的值</returns>
    public extern double? api_get_z_scale();

    /// <summary>
    /// 获取可破坏物的旋转角度
    /// </summary>
    /// <returns>角度值</returns>
    public extern double? api_get_angle();

    /// <summary>
    /// 获取可破坏物模型
    /// </summary>
    /// <returns>模型编号</returns>
    public extern int? api_get_dest_model();

    /// <summary>
    /// 可破坏物能否被技能指示器选中
    /// </summary>
    /// <returns>布尔值</returns>
    public extern bool? api_is_ability_target();

    /// <summary>
    /// 可破坏物能否被普通攻击
    /// </summary>
    /// <returns>布尔值</returns>
    public extern bool? api_is_attacked();

    /// <summary>
    /// 可破坏物能否被选中
    /// </summary>
    /// <returns>布尔值</returns>
    public extern bool? api_is_selected();

    /// <summary>
    /// 可破坏物能否被采集
    /// </summary>
    /// <returns>布尔值</returns>
    public extern bool? api_is_collected();

    /// <summary>
    /// 可破坏物是否可见
    /// </summary>
    /// <returns>布尔值</returns>
    public extern bool? api_is_visible();

    /// <summary>
    /// 可破坏物是否存活
    /// </summary>
    /// <returns>布尔值</returns>
    public extern bool? api_is_alive();

    /// <summary>
    /// 获取可破坏物的当前资源
    /// </summary>
    /// <returns>布尔值</returns>
    public extern int? api_get_dest_cur_source_nums();

    /// <summary>
    /// 获取可破坏物的最大资源
    /// </summary>
    /// <returns>布尔值</returns>
    public extern int? api_get_dest_max_source_nums();

    /// <summary>
    /// 获取可破坏物的玩家属性
    /// </summary>
    /// <returns>玩家属性</returns>
    public extern string api_get_role_res_of_dest();

    /// <summary>
    /// 获取可破坏物的物品类型
    /// </summary>
    /// <returns>物品类型</returns>
    public extern int? api_get_item_type_of_dest();

    /// <summary>
    /// 获取可破坏物的面向角度
    /// </summary>
    /// <returns>可破坏物的面向角度</returns>
    public extern Fix32 api_get_dest_face_angle();

    /// <summary>
    /// 获取可破坏物的高度
    /// </summary>
    /// <returns>可破坏物的高度</returns>
    public extern Fix32 api_get_dest_height_offset();

    /// <summary>
    /// 复活可破坏物
    /// </summary>
    /// <returns></returns>
    public extern void api_revivie_new();

    /// <summary>
    /// 设置可破坏物能否被技能指示器选中
    /// </summary>
    /// <param name="bool_value"> 布尔值 </param>
    /// <returns></returns>
    public extern void api_set_dest_is_ability_target(bool? bool_value);

    /// <summary>
    /// 设置可破坏物能否被普通攻击
    /// </summary>
    /// <param name="bool_value"> 布尔值 </param>
    /// <returns></returns>
    public extern void api_set_dest_is_attacked(bool? bool_value);

    /// <summary>
    /// 设置可破坏物能否被选中
    /// </summary>
    /// <param name="bool_value"> 布尔值 </param>
    /// <returns></returns>
    public extern void api_set_dest_is_selected(bool? bool_value);

    /// <summary>
    /// 设置可破坏物能否被采集
    /// </summary>
    /// <param name="bool_value"> 布尔值 </param>
    /// <returns></returns>
    public extern void api_set_dest_is_collected(bool? bool_value);

    /// <summary>
    /// 可破坏物添加标签
    /// </summary>
    /// <param name="tag"> TAG </param>
    /// <returns></returns>
    public extern void api_add_tag(string tag);

    /// <summary>
    /// 可破坏物移除标签
    /// </summary>
    /// <param name="tag"> TAG </param>
    /// <returns></returns>
    public extern void api_remove_tag(string tag);

    /// <summary>
    /// 设置可破坏物能的当前资源个数
    /// </summary>
    /// <param name="sp_value"> 资源数 </param>
    /// <returns></returns>
    public extern void api_set_cur_source_nums(Fix32 sp_value);

    /// <summary>
    /// 设置可破坏物能的最大资源个数
    /// </summary>
    /// <param name="sp_value"> 资源数 </param>
    /// <returns></returns>
    public extern void api_set_max_source_nums(Fix32 sp_value);

    /// <summary>
    /// 增加可破坏物能的当前生命值
    /// </summary>
    /// <param name="delta"> 当前生命值 </param>
    /// <returns></returns>
    public extern void api_add_hp_cur_value(Fix32 delta);

    /// <summary>
    /// 增加可破坏物能的最大生命值
    /// </summary>
    /// <param name="delta"> 最大生命值 </param>
    /// <returns></returns>
    public extern void api_add_hp_max_value(Fix32 delta);

    /// <summary>
    /// 增加可破坏物能的当前资源个数
    /// </summary>
    /// <param name="delta"> 当前资源数 </param>
    /// <returns></returns>
    public extern void api_add_sp_cur_value(Fix32 delta);

    /// <summary>
    /// 增加可破坏物能的最大资源个数
    /// </summary>
    /// <param name="delta"> 最大资源数 </param>
    /// <returns></returns>
    public extern void api_add_sp_max_value(Fix32 delta);

    /// <summary>
    /// 可破坏物播放动画
    /// </summary>
    /// <param name="name"> 动画名称 </param>
    /// <param name="init_time"> 开始时间(s) </param>
    /// <param name="end_time"> 结束时间(s)，正数 -1 表示不结束 </param>
    /// <param name="loop"> 是否循环 </param>
    /// <param name="rate"> 播放倍率 </param>
    /// <returns></returns>
    public extern void api_play_animation(string name,double? init_time,double? end_time,bool? loop,double? rate);

    /// <summary>
    /// 可破坏物停止播放动画
    /// </summary>
    /// <param name="name"> 动画名称 </param>
    /// <returns></returns>
    public extern void api_stop_animation(string name);

    /// <summary>
    /// 可破坏物替换模型
    /// </summary>
    /// <param name="target_model"> 目标模型编号 </param>
    /// <returns></returns>
    public extern void api_replace_model(int? target_model);

    /// <summary>
    /// 取消可破坏物替换模型
    /// </summary>
    /// <param name="target_model"> 目标模型名字 </param>
    /// <returns></returns>
    public extern void api_cancel_replace_model(int? target_model);

    /// <summary>
    /// 设置可破坏物的高度
    /// </summary>
    /// <param name="height_value"> 高度值 </param>
    /// <returns></returns>
    public extern void api_set_height_offset(Fix32 height_value);

    /// <summary>
    /// 增加可破坏物的高度
    /// </summary>
    /// <param name="delta"> 高度变化值 </param>
    /// <returns></returns>
    public extern void api_add_height_offset(Fix32 delta);

}
